package com.bbs.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bbs.common.PageResult;
import com.bbs.dto.ContestPage;

import com.bbs.pojo.Context;
import com.bbs.pojo.Comment;
import com.bbs.properties.MyUserDetails;
import com.bbs.service.IContextService;
import com.bbs.service.ICommentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.util.List;

@Controller
@Slf4j
@RequestMapping("/user/index")
public class IndexController {
    @Autowired
    private IContextService contextService;

    @Autowired
    private ICommentService commentService; // 新增评论服务注入

    @GetMapping("")
    public String index(Model model) {
        model.addAttribute("currentPage", 1); // 默认从第一页开始
        // 获取最新帖子（假设按创建时间倒序排列）
        List<Context> latestPosts = contextService.list(new QueryWrapper<Context>()
                .orderByDesc("create_time")
                .last("LIMIT 5")); // 限制返回5条最新帖子
        model.addAttribute("latestPosts", latestPosts);

        // 获取热门帖子（假设按评论数排序）
        List<Context> hotPosts = contextService.list(new QueryWrapper<Context>()
                .orderByDesc("comment_count")
                .last("LIMIT 5")); // 限制返回5条热门帖子
        model.addAttribute("hotPosts", hotPosts);

        return "index";
    }



    @GetMapping("/{page}")
    public String getPage(@PathVariable String page, Model model) {
        log.info("分页查询，当前页码：{}", page);
        // 手动转换 page 参数为整数类型
        int pageNum;
        try {
            pageNum = Integer.parseInt(page);
        } catch (NumberFormatException e) {
            pageNum = 1; // 如果转换失败，默认设置为第一页
        }
        int pageSize = 10; // 默认每页显示10条

        Page<Context> pageObj = new Page<>(pageNum, pageSize);
        // 使用 Service 进行分页查询
        IPage<Context> contextPage = contextService.page(pageObj, new QueryWrapper<Context>().orderByDesc("create_time"));
        // 封装到 PageResult 并返回
        PageResult pageResult = new PageResult();
        pageResult.setTotal(contextPage.getTotal());
        pageResult.setRecords(contextPage.getRecords());
        pageResult.setPageNum(pageNum); // 设置当前页码
        pageResult.setPages((int) Math.ceil((double) contextPage.getTotal() / pageSize)); // 设置总页数
        model.addAttribute("pageResult", pageResult);
        return "index-context";
    }



    // 修改方法：处理帖子详情页面跳转
    @GetMapping("/detail/{contextId}")
    public String getContextDetail(@PathVariable Long contextId, Model model) {
        Context context = contextService.getById(contextId);
        if (context == null) {
            return "redirect:/user/index/1"; // 如果帖子不存在，重定向到首页
        }
        // 获取该帖子的评论列表
        List<Comment> comments = commentService.list(new QueryWrapper<Comment>()
                .eq("context_id", contextId)
                .orderByDesc("create_time"));
        model.addAttribute("context", context);
        model.addAttribute("comments", comments); // 添加评论列表到模型
        return "context-detail"; // 返回帖子详情页面
    }
}